SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Proc [dbo].[SP_TASALD_EMPR_I02]  
/*---------------------------------------------------------------------*/  
/*----- Empresa          : OFISIS S.A.                            -----*/  
/*----- Cliente          : OFISIS S.A.                            -----*/  
/*----- Sistema          : Contabilidad                           -----*/  
/*----- Modulo           : Empresa                                -----*/  
/*----- Programa         : Mayorizacion                           -----*/  
/*----- Nombre           : SP_TASALD_EMPR_I02                   -----*/  
/*----- Script           : TASALD_EMPR                            -----*/  
/*----- Desarrollado     : Israel Estrada Polanco                 -----*/  
/*----- Fecha            : 23/06/1997                             -----*/  
/*----- Base de Datos    : MS SQL Server                          -----*/  
/*----- Version BD       : 6.5                                    -----*/  
/*----- Invoca a SP      :                                        -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 1 por : Percy Garcia                           -----*/  
/*----- Fecha Modifica   : 29/12/2003                             -----*/  
/*----- Detalle Modifica : Optimizaci?n                           -----*/  
/*------Update para Ctas. se hace solo cuando cambia de Cta.      -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 2 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 05/06/2004                             -----*/  
/*----- Detalle Modifica : usuario creacion y modif               -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 3 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 26/06/2009                             -----*/  
/*----- Detalle Modifica : se ordeno joins en update    -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Drop Proc SP_TASALD_EMPR_I02                              -----*/  
/*----- Grant All On SP_TASALD_EMPR_I02 To PUBLIC             -----*/  
/*----- SP_TASALD_EMPR_I02                                     -----*/  
/*---------------------------------------------------------------------*/  
  
@ISCO_EMPR TD_VC_002,  
@ISCO_USUA          TD_VC_008,
@IDFE_USUA          TD_DT_001,
@ISCO_UNID_CNTB TD_VC_003,  
@INNU_CNTB_EMPR TD_IN_001_CONT,  
@INNU_ANO1 TD_IN_004_ANNO,  
@INNU_MES1 TD_IN_002_MESE,  
@INNU_ANO2 TD_IN_004_ANNO,  
@INNU_MES2 TD_IN_002_MESE  
  
As  
Declare  
 @CNNU_MESE   TD_IN_002_MESE,  
 @CSCO_CNTA_EMPR  TD_VC_020_CNTA,  
 @CSTI_AUXI_EMPR  TD_VC_001,  
 @CSCO_AUXI_EMPR  TD_VC_020,  
 @CNIM_CARG_MESE  TD_NU_016_004,  
 @CNIM_ABON_MESE  TD_NU_016_004,  
 @CNIM_CARG_ORIG  TD_NU_016_004,  
 @CNIM_ABON_ORIG  TD_NU_016_004,  
 @CSCO_ORDE_SERV  TD_VC_020,  
 @CSPR_DATO   TD_VC_020,   
 @CSCO_UNID_CNTB  TD_VC_003,   
 @VSST_FLAG       TD_VC_001,  
 @VNIM_CARG_MESE  TD_NU_016_004,  
 @VNIM_ABON_MESE  TD_NU_016_004,  
 @VNIM_CARG_ORIG  TD_NU_016_004,  
 @VNIM_ABON_ORIG  TD_NU_016_004,  
 @VSCO_CNTA_EMPR  TD_VC_020_CNTA,  
 @VSCO_UNID_CNTB  TD_VC_003,   
 @VNNU_MESE   TD_IN_002_MESE  
                                                                                                
 Begin Transaction SP_TASALD_EMPR_I02  
  
  Select @VSST_FLAG = 'S'  
  Select @VNIM_CARG_MESE = 0    
  Select @VNIM_ABON_MESE = 0    
  Select @VNIM_CARG_ORIG = 0    
  Select @VNIM_ABON_ORIG = 0    
                                                                                                   
  Declare CU_TASALD_EMPR_I02_1 Cursor    For  
    Select NU_MESE, CO_UNID_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, CO_ORDE_SERV,  
       IsNull( SUM( ( ROUND( ((ASCII(TI_OPER)/67) * Isnull(IM_MVTO_CNTB, 0)), 2))), 0),  
       IsNull( SUM( ( ROUND( ((65/ASCII(TI_OPER)) * Isnull(IM_MVTO_CNTB, 0)), 2))), 0),  
       IsNull( SUM( ( ROUND( ((ASCII(TI_OPER)/67) * Isnull(IM_MVTO_ORIG, 0)), 2))), 0),  
       IsNull( SUM( ( ROUND( ((65/ASCII(TI_OPER)) * Isnull(IM_MVTO_ORIG, 0)), 2))), 0)     
   From  TXMVTO_CNTB  
    Where CO_EMPR = @ISCO_EMPR  
     And  NU_CNTB_EMPR = @INNU_CNTB_EMPR  
     And  NU_ANNO = @INNU_ANO1  
     And  NU_MESE >=  @INNU_MES1 And NU_MESE <= @INNU_MES2  
     And  SI_MVTO_CNTB = 'APR'  
     Group By CO_EMPR, NU_CNTB_EMPR, NU_ANNO, NU_MESE, CO_UNID_CNTB, CO_CNTA_EMPR,  
		TI_AUXI_EMPR, CO_AUXI_EMPR, CO_ORDE_SERV  
     Order By CO_EMPR, NU_CNTB_EMPR, NU_ANNO, NU_MESE, CO_UNID_CNTB, CO_CNTA_EMPR,  
		TI_AUXI_EMPR, CO_AUXI_EMPR, CO_ORDE_SERV  
   
   Open CU_TASALD_EMPR_I02_1  
   Fetch CU_TASALD_EMPR_I02_1 Into   
       @CNNU_MESE, @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,   
       @CSCO_ORDE_SERV, @CNIM_CARG_MESE, @CNIM_ABON_MESE, @CNIM_CARG_ORIG, @CNIM_ABON_ORIG  
  
  While @@Fetch_status = 0  
   Begin  
  
     -- SOLO INGRESA 1 VEZ   
     If @VSST_FLAG = 'S'   
       Begin  
       Select @VSCO_CNTA_EMPR = @CSCO_CNTA_EMPR  
       Select @VNNU_MESE = @CNNU_MESE  
       Select @VSCO_UNID_CNTB = @CSCO_UNID_CNTB  
       Select @VSST_FLAG = 'N'  
       End  
  
     -- Actualiza siempre los datos a Nivel de detalle  
     If @CSCO_CNTA_EMPR != @VSCO_CNTA_EMPR   
     Begin  -- (1)  
  
     Update TASALD_EMPR  
     Set   IM_CARG_CNTB = IM_CARG_CNTB + @VNIM_CARG_MESE,    
           IM_ABON_CNTB = IM_ABON_CNTB + @VNIM_ABON_MESE,  
           IM_CARG_ORIG = IM_CARG_ORIG + @VNIM_CARG_ORIG,  
    IM_ABON_ORIG = IM_ABON_ORIG + @VNIM_ABON_ORIG,
           CO_USUA_MODI = @ISCO_USUA,
           FE_USUA_MODI = @IDFE_USUA  
     Where CO_EMPR = @ISCO_EMPR   
     And   CO_UNID_CNTB = @VSCO_UNID_CNTB  
     And   NU_CNTB_EMPR = @INNU_CNTB_EMPR  
     And   NU_ANNO = @INNU_ANO1   
     And   NU_MESE = @VNNU_MESE  
     And   CO_CNTA_EMPR = @VSCO_CNTA_EMPR  
     And   TI_AUXI_EMPR IS NULL  
     And   CO_AUXI_EMPR IS NULL  
     And   CO_ORDE_SERV IS NULL  
  
     If @@ERROR != 0  
     Begin   
       Close CU_TASALD_EMPR_I02_1  
       Deallocate CU_TASALD_EMPR_I02_1  
       Rollback Transaction  
       Return  
     End  
  
     Select @VNIM_CARG_MESE =  0    
     Select @VNIM_ABON_MESE =  0    
     Select @VNIM_CARG_ORIG =  0    
     Select @VNIM_ABON_ORIG =  0    
  
     Select @VSCO_CNTA_EMPR = @CSCO_CNTA_EMPR  
     Select @VSCO_UNID_CNTB = @CSCO_UNID_CNTB  
     Select @VNNU_MESE = @CNNU_MESE  
   
    End   --(1)  
  
     -- ACUMULANDO VALORES   
     Select @VNIM_CARG_MESE =  @VNIM_CARG_MESE + @CNIM_CARG_MESE    
     Select @VNIM_ABON_MESE =  @VNIM_ABON_MESE + @CNIM_ABON_MESE    
     Select @VNIM_CARG_ORIG =  @VNIM_CARG_ORIG + @CNIM_CARG_ORIG    
     Select @VNIM_ABON_ORIG =  @VNIM_ABON_ORIG + @CNIM_ABON_ORIG  
   
      Select @CSPR_DATO = Rtrim(Replicate('0',@CNNU_MESE) + '1' + replicate('0',20-(@CNNU_MESE+1)))  
  
      -- Caso Cuenta - SI Auxiliar - SI/NO Orden Servicio    
      If @CSTI_AUXI_EMPR Is Not Null And @CSCO_AUXI_EMPR Is Not Null  
      Begin  
        -- Inserta aquellos que tienen auxiliares Con o Sin Orden Servicio  
        Insert Into TASALD_EMPR(CO_EMPR, CO_UNID_CNTB, NU_CNTB_EMPR, NU_ANNO, NU_MESE,  
        CO_CNTA_EMPR,TI_AUXI_EMPR, CO_AUXI_EMPR, CO_ORDE_SERV,  
        IM_CARG_CNTB, IM_ABON_CNTB,IM_CARG_ORIG, IM_ABON_ORIG,   
        PR_DATO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA)  
        Values(@ISCO_EMPR, @CSCO_UNID_CNTB, @INNU_CNTB_EMPR, @INNU_ANO1, @CNNU_MESE,  
        @CSCO_CNTA_EMPR,@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,@CSCO_ORDE_SERV,   
        @CNIM_CARG_MESE, @CNIM_ABON_MESE, @CNIM_CARG_ORIG, @CNIM_ABON_ORIG,  
        @CSPR_DATO, @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA)  
  
        If @@ERROR != 0  
        Begin   
          Close CU_TASALD_EMPR_I02_1  
          Deallocate CU_TASALD_EMPR_I02_1             Rollback Transaction  
          Return  
        End  
      End  
    Else  
    -- Caso Cuenta - NO Auxiliar - SI Orden Servicio    
    If @CSTI_AUXI_EMPR Is Null And @CSCO_AUXI_EMPR Is Null And @CSCO_ORDE_SERV Is Not Null  
    Begin  
      Insert Into TASALD_EMPR(CO_EMPR, CO_UNID_CNTB, NU_CNTB_EMPR, NU_ANNO, NU_MESE,  
      CO_CNTA_EMPR,TI_AUXI_EMPR, CO_AUXI_EMPR,CO_ORDE_SERV,  
      IM_CARG_CNTB, IM_ABON_CNTB,IM_CARG_ORIG, IM_ABON_ORIG,   
      PR_DATO , CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA)  
      Values(@ISCO_EMPR, @CSCO_UNID_CNTB, @INNU_CNTB_EMPR, @INNU_ANO1, @CNNU_MESE,  
      @CSCO_CNTA_EMPR,@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_ORDE_SERV,  
      @CNIM_CARG_MESE, @CNIM_ABON_MESE, @CNIM_CARG_ORIG, @CNIM_ABON_ORIG,   
      @CSPR_DATO , @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA)  
  
      If @@ERROR != 0  
      Begin   
		Close CU_TASALD_EMPR_I02_1  
        Deallocate CU_TASALD_EMPR_I02_1  
        Rollback Transaction  
        Return  
      End  
    End  
   
   Fetch CU_TASALD_EMPR_I02_1 Into   
       @CNNU_MESE, @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,   
       @CSCO_ORDE_SERV, @CNIM_CARG_MESE, @CNIM_ABON_MESE, @CNIM_CARG_ORIG, @CNIM_ABON_ORIG  
 End  
 Close CU_TASALD_EMPR_I02_1  
 Deallocate CU_TASALD_EMPR_I02_1  
  
 -- UPDATE PARA EL ULTIMO REGISTRO   
 Update TASALD_EMPR  
 Set   IM_CARG_CNTB = IM_CARG_CNTB + @VNIM_CARG_MESE,    
       IM_ABON_CNTB = IM_ABON_CNTB + @VNIM_ABON_MESE,  
       IM_CARG_ORIG = IM_CARG_ORIG + @VNIM_CARG_ORIG,  
      IM_ABON_ORIG = IM_ABON_ORIG + @VNIM_ABON_ORIG,
           CO_USUA_MODI = @ISCO_USUA,
           FE_USUA_MODI = @IDFE_USUA  
 Where CO_EMPR = @ISCO_EMPR   
 And   CO_UNID_CNTB = @CSCO_UNID_CNTB  
 And   NU_CNTB_EMPR = @INNU_CNTB_EMPR  
 And   NU_ANNO = @INNU_ANO1   
 And   NU_MESE = @CNNU_MESE  
 And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
 And   TI_AUXI_EMPR IS NULL  
 And   CO_AUXI_EMPR IS NULL  
 And   CO_ORDE_SERV IS NULL  
  
 Commit Transaction  
                                                   
Return  
/*-------------------------------------- Fin ---------------------------------------*/  




GO
